package cn.com.utils;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

/**
 * 实用工具类，用于对路径进行编码和解码操作。
 */
public class PathDecoderUtil {

    /**
     * 解码路径字符串为UTF-8编码。
     *
     * @param encodedPath 要解码的路径字符串
     * @return 解码后的字符串，如果解码失败则返回null
     */
    public static String decodePath(String encodedPath) {
        try {
            return URLDecoder.decode(encodedPath, StandardCharsets.UTF_8.toString());
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return "";
        }
    }

    /**
     * 编码路径字符串为UTF-8编码。
     *
     * @param path 要编码的路径字符串
     * @return 编码后的字符串，如果编码失败则返回null
     */
    public static String encodePath(String path) {
        try {
            return URLEncoder.encode(path, StandardCharsets.UTF_8.toString());
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 移除路径末尾的反斜杠。
     *
     * @param path 要操作的路径字符串
     * @return 移除末尾反斜杠后的路径
     */
    public static String removeTrailingSlash(String path) {
        return path.endsWith("/") ? path.substring(0, path.length() - 1) : path;
    }

    /**
     * 在路径末尾添加反斜杠。
     *
     * @param path 要操作的路径字符串
     * @return 添加末尾反斜杠后的路径
     */
    public static String addTrailingSlash(String path) {
        return path.endsWith("/") ? path : path + "/";
    }

    /**
     * 提取路径的文件名。
     *
     * @param path 要提取文件名的路径字符串
     * @return 提取的文件名
     */
    public static String extractFileName(String path) {
        int lastSlashIndex = path.lastIndexOf("/");
        return lastSlashIndex != -1 ? path.substring(lastSlashIndex + 1) : path;
    }
}
